import {defineStore} from 'pinia';
import {Session} from '/@/utils/storage';
import {useUserApi} from "/@/api/useSystemApi/user";

/**
 * 用户信息
 * @methods setUserInfos 设置用户信息
 */
export const useUserInfo = defineStore('userInfo', {
	state: () => ({
		userInfos: {
			id: null,
			authBtnList: [],
			avatar: '',
			roles: [],
			time: 0,
			username: '',
			nickname: '',
			user_type: null,
			login_id: '',
		},
	}),
	actions: {

		async setUserInfos(newUserInfo = {}) {
			// 全局设置用户信息
			if (Object.keys(newUserInfo).length === 0) {
				// 如果 newUserInfo 为空，从 Session 获取用户信息
				this.userInfos = Session.get('userInfo') || await this.getApiUserInfo();
			} else {
				// 使用传递的新用户信息更新状态
				this.userInfos = { ...this.userInfos, ...newUserInfo };
				// 更新 Session 中的用户信息
				Session.set("userInfo", this.userInfos);
			}
		},

		async getApiUserInfo() {
			let {data} = await useUserApi().getUserInfoByToken()
			return data
		},

		async updateAvatar(newAvatarUrl) {
			if (!newAvatarUrl) {
				// 如果 newAvatarUrl 为空，则从 Session 获取头像信息
				const sessionUserInfo = Session.get('userInfo');
				this.userInfos.avatar = sessionUserInfo ? sessionUserInfo.avatar : 'http://image.fu1.top/%E8%B6%85%E7%BA%A7%E7%AE%A1%E7%90%86%E5%91%98-avatar-1735455785546.jpg';
			} else {
				// 更新头像信息
				this.userInfos.avatar = newAvatarUrl;
				// 更新 Session 中的头像信息
				Session.set("userInfo", { ...Session.get('userInfo'), avatar: newAvatarUrl });
			}
		}
	},
});
